import telnetlib as t

#ugh, an old-style class
class Monitor(t.Telnet):
    charmap = {
    'A' : 'shift-a',       
    'B' : 'shift-b',
    'C' : 'shift-c',
    'D' : 'shift-d',
    'E' : 'shift-e',
    'F' : 'shift-f',
    'G' : 'shift-g',
    'H' : 'shift-h',
    'I' : 'shift-i',
    'J' : 'shift-j',
    'K' : 'shift-k',
    'L' : 'shift-l',
    'M' : 'shift-m',
    'N' : 'shift-n',
    'O' : 'shift-o',
    'P' : 'shift-p',
    'Q' : 'shift-q',
    'R' : 'shift-r',
    'S' : 'shift-s',
    'T' : 'shift-t',
    'U' : 'shift-u',
    'V' : 'shift-v',
    'W' : 'shift-w',
    'X' : 'shift-x',
    'Y' : 'shift-y',
    'Z' : 'shift-z',
    '.' : 'dot',
    ',' : 'comma',                   
    ';' : 'semicolon',
    ':' : 'shift-semicolon',
    '\\' : 'backslash',
    '/' : 'slash',
    "''" : 'apostrophe',
    '"' : 'shift-apostrophe',
    ' ' : 'spc',
    '-' : 'minus',
    '+' : 'plus',
    '*' : 'asterisk',
    '=' : 'equal',
    '(' : 'bracket_left',
    ')' : 'bracket_right'
    }
      
    def send_key(self, keystr):
        t.Telnet.read_until(self, '(qemu)')
        t.Telnet.write(self, 'sendkey {}\n'.format(keystr))
        
    def send(self, msg):       
        for letter in msg:
            t.Telnet.write(self, 'sendkey {}\n'.format(self.charmap.get(letter, letter)))
        t.Telnet.write(self, 'sendkey ret\n')
